package edu.hitsz.aircraft;

import edu.hitsz.application.Main;
import edu.hitsz.bullet.AbstractBullet;
import edu.hitsz.strategyshoot.Context;
import edu.hitsz.strategyshoot.StraightShoot;
import java.util.List;

/**
 * 精英敌机
 * 可以射击
 *
 * @author hitsz
 */
public class EliteEnemy extends AbstractEnemy{

    /**
     * @param locationX  精英机位置x坐标
     * @param locationY 精英机位置y坐标
     * @param speedX 精英机射出的子弹的基准速度
     * @param speedY 精英机射出的子弹的基准速度
     * @param hp    精英机生命值
     * @param shootNum 单次射击的子弹数量
     * @param power 子弹伤害
     * @param direction 子弹运动方向
     */
    public EliteEnemy(int locationX, int locationY, int speedX, int speedY, int hp,int shootNum,int power,int direction) {
        super(locationX, locationY, speedX, speedY, hp,shootNum,power,direction);
        this.context = new Context(new StraightShoot());
    }

    @Override
    public void forward() {
        super.forward();
        // 判定 y 轴向下飞行出界
        if (locationY >= Main.WINDOW_HEIGHT) {
            vanish();
        }
    }

    @Override
    /**
     * 通过射击产生子弹
     * @return 射击出的子弹List
     */
    public List<AbstractBullet> shoot() {
        return context.shoot(this,power,direction,shootNum);
    }


}